import fetch from 'dva/fetch'

function checkStatus (response) {
  if (response.status >= 200 && response.status < 300) {
    return response
  }
  const error = new Error(response.statusText)
  error.response = response
  throw error
}
function checkBizReturn (data) {
  if (data.code === 400) {
    const error = new Error(data.message)
    error.response = data
    throw error
  }
  return data
}
/**
 * Requests a URL, returning a promise.
 *
 * @param  {string} url       The URL we want to request
 * @param  {object} [options] The options we want to pass to "fetch"
 * @return {object}           An object containing either "data" or "err"
 */
export default async function dvarequest (url, options) {
  const response = await fetch(url, options)
  checkStatus(response)
  const data = await response.json()
  checkBizReturn(data)
  const ret = {
    data,
    headers: {},
  }
  return ret
}
